#ifndef ERROR_H
#define ERROR_H

/*
	词法错误码
*/
typedef enum lex_err_code
{
	ID_2_LONG, 		// 标识符过长
	NUM_2_LONG,     // 数字过长
	STR_2_LONG,		// 字符串过长
	COMMENT_NO_END,	// 多行注释没有正常结束
	STR_INCOMPLT,	// 字符串缺少右引号
	CHARA_INCOMPLT, // 字符不完整
	OR_NO_PAIR,		// “||”不完整
	UNRECOGNIZED_TOKEN,	// 无法识别的词法记号
	EMPTY_CHARA,   // 字符常量为空
	UNKNOW_ESCAPE_SEQUENCE, // 未知转义字符
	LEX_ERR_CODE_NUM,
} lex_err_code_e;


typedef enum syn_err_code
{
	UNKNOW_VAR,
	UNKNOW_NUM,
	LOST_ASSIGN,
	LOST_SEMICO,
} syn_err_code_e;

typedef enum err_level{
	WARNING,
	ERROR,
}err_level_e;

void lex_err(lex_err_code_e code, err_level_e lvl);
void syn_err(syn_err_code_e code,  err_level_e lvl);
void show_error_num(void);
#endif